// 说明：SideMenu 点击逻辑——驾驶舱新开 Tab，其它保持原逻辑
import React from 'react';
import { Layout, Menu } from 'antd';
import type { MenuProps } from 'antd';
import { history } from 'umi';
import { menuConfig, convertToMenuItems, menuPathMap } from '@/config/menuConfig';
import './SideMenu.less';

const { Sider } = Layout;

// 假定“驾驶舱”菜单 key 为 'dashboard'，路径为 '/dashboard'
// 如果你使用了别的 key/path，请在这里改为实际值
const cockpitKey = 'dashboard';
const cockpitPath = '/dashboard';

const SideMenu: React.FC = () => {
  const menuItems = convertToMenuItems(menuConfig);

  const handleMenuClick: MenuProps['onClick'] = ({ key }) => {
    const targetPath = menuPathMap[key];

    if (!targetPath) return;

    // 针对“驾驶舱”菜单：新开 Tab + 脱离当前布局（需路由设置 layout: false）
    if (key === cockpitKey || targetPath === cockpitPath) {
      // 推荐添加 'noopener,noreferrer' 提升安全性、避免 window.opener 污染
      window.open(targetPath, '_blank', 'noopener,noreferrer');
      return;
    }

    // 其他菜单使用站内跳转，保留当前布局
    history.push(targetPath);
  };

  return (
    <Sider width={200} className="side-menu">
      <Menu
        mode="inline"
        defaultSelectedKeys={[cockpitKey]}
        defaultOpenKeys={['department']}
        style={{ height: '100%', borderRight: 0 }}
        items={menuItems}
        onClick={handleMenuClick}
      />
    </Sider>
  );
};

export default SideMenu;
